/*要实现一个标准的单例模式并不复杂，无非是用一个变量来标志当前是否已经为某个类创建
过对象，如果是，则在下一次获取该类的实例时，直接返回之前创建的对象。代码如下：*/
var Singleton=function(name){
    this.name=name;
    this.instance=null;
};
Singleton.prototype.getName=function(){
    console.log(this.name);
}
Singleton.getInstance=function(name){
    if(!this.instance){
        this.instance=new Singleton(name);
    }
    return this.instance;
}

var a=Singleton.getInstance("123");
var b=Singleton.getInstance("456");
console.log(a===b);
/*或者*/
var Singleton1=function(name){
    this.name=name;
}
Singleton1.prototype.getName2=function(){
    console.log(this.name);
}
Singleton1.getInstance2=(function(){
    var instance2=null;
    return function(name){
        if(!instance2){
            instance2=new Singleton1(name);
        }
        return instance2;
    }
})();
var a1=Singleton1.getInstance2("456");
var b1=Singleton1.getInstance2("789");
console.log(a1===b1);
/*我们通过Singleton.getInstance 来获取Singleton 类的唯一对象，这种方式相对简单，但有
一个问题，就是增加了这个类的“不透明性”，Singleton 类的使用者必须知道这是一个单例类，
跟以往通过new XXX 的方式来获取对象不同，这里偏要使用Singleton.getInstance 来获取对象。
接下来顺便进行一些小测试，来证明这个单例类是可以信赖的：*/
